﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Input.Touch;
using Microsoft.Xna.Framework.Media;
using YaoGuaiParty.Component;
using G.XNA;

namespace YaoGuaiParty
{
    /// <summary>
    /// 这是游戏的主类型
    /// </summary>
    public class Game1 : Microsoft.Xna.Framework.Game
    {
        GraphicsDeviceManager graphics;
        SpriteBatch spriteBatch;
        //const int Size = 75;
        //const int Thickness = 5;

        //string[] strs = new string[] { "A", "B", "C", "D", "E" };
        //Piece[][] btns;//用来存放屏幕上所有块的二维数组
        //int rows;//行数
        //int cols;//列数
        //Rectangle canvasRect;//游戏块的范围
        //Random random = new Random();
        public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";

            // Windows Phone 的默认帧速率为 30 fps。
            TargetElapsedTime = TimeSpan.FromTicks(333333);

            // 延长锁定时的电池寿命。
            InactiveSleepTime = TimeSpan.FromSeconds(1);
        }
        Component.GuaoWuParty party;
        G.XNA.Component.Button calcuBtn;
        G.XNA.Component.Button resetBtn;
        /// <summary>
        /// 允许游戏在开始运行之前执行其所需的任何初始化。
        /// 游戏能够在此时查询任何所需服务并加载任何非图形
        /// 相关的内容。调用 base.Initialize 将枚举所有组件
        /// 并对其进行初始化。 
        /// </summary>
        protected override void Initialize()
        {

            // TODO: 在此处添加初始化逻辑
            calcuBtn = new G.XNA.Component.Button(this, "0");
            calcuBtn.Click += b_Click;
            this.Components.Add(calcuBtn);
            resetBtn = new G.XNA.Component.Button(this, "reset");
            resetBtn.Click += resetBtn_Click;
            this.Components.Add(resetBtn);
            party = new GuaoWuParty(this);
            party.ClearCountChange += party_ClearCountChange;
            this.Components.Add(party);
            base.Initialize();
        }

        void party_ClearCountChange(object sender, EventArgs e)
        {
            calcuBtn.Text = party.ClearCount.ToString();
        }
        //重置游戏区
        void resetBtn_Click(object sender, EventArgs e)
        {
            party.Reset();
        }


        void b_Click(object sender, EventArgs e)
        {
            
        }
      
        /// <summary>
        /// 对于每个游戏会调用一次 LoadContent，
        /// 用于加载所有内容。
        /// </summary>
        protected override void LoadContent()
        {
            // 创建新的 SpriteBatch，可将其用于绘制纹理。
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: 在此处使用 this.Content 加载游戏内容
            Rectangle clientBounds = this.GraphicsDevice.Viewport.Bounds;
            SpriteFont segoe14 = this.Content.Load<SpriteFont>("Segoe14");
            calcuBtn.SpriteFont = segoe14;
            calcuBtn.Destination = new Rectangle(0, 20, 75, 75);

            resetBtn.SpriteFont = segoe14;
            resetBtn.Destination = new Rectangle(0, clientBounds.Height - 95, 75, 75);

        }

        /// <summary>
        /// 对于每个游戏会调用一次 UnloadContent，
        /// 用于取消加载所有内容。
        /// </summary>
        protected override void UnloadContent()
        {
            // TODO: 在此处取消加载任何非 ContentManager 内容
        }

        /// <summary>
        /// 允许游戏运行逻辑，例如更新全部内容、
        /// 检查冲突、收集输入信息以及播放音频。
        /// </summary>
        /// <param name="gameTime">提供计时值的快照。</param>
        protected override void Update(GameTime gameTime)
        {
            // 允许游戏退出
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();
            base.Update(gameTime);
        }

        /// <summary>
        /// 当游戏该进行自我绘制时调用此项。
        /// </summary>
        /// <param name="gameTime">提供计时值的快照。</param>
        protected override void Draw(GameTime gameTime)
        {
            GraphicsDevice.Clear(Color.CornflowerBlue);

            // TODO: 在此处添加绘图代码

            base.Draw(gameTime);
        }
    }
}
